﻿import re
import openpyxl


def find_line_number(filename, target_data):
    liens = []
    with open(filename, 'r', encoding='gbk') as file:
        for line_num, line in enumerate(file, start=1):
            if target_data in line:
                # return line_num
                liens.append(line_num)
    # return -1  # 如果未找到目标数据，则返回-1表示未找到
    return liens


# 读取TXT，切分数据，保存到Excel
def txt_split_excel(path):  # tpath=txt文件路径,epath=excel文件路径
    epath = ''
    lines = find_line_number(path, '<<< 子汇水面积')
    print(len(lines))
    data = open(path, encoding='gbk')  # 读取txt文件，设置编码
    workbook = openpyxl.Workbook()  # 创建一个新的xlsx文件
    sheet0 = workbook.active  # 调用得到正在运行的工作表。注意：调用工作表的索引默认是0，即默认对第一张工作表进行操作。
    for num, i in enumerate(data):
        if num == lines[len(lines) - 1] - 1:
            # 将字符串i以全部空白字符为分割符，将其分割成一个字符列表
            line = re.split(r'\s+', i)
            sheet0.append([line[2], line[3]])
            epath = line[2] + line[3] + '.xlsx'
        elif num == lines[len(lines) - 1] + 1:
            # 将字符串i以全部空白字符为分割符，将其分割成一个字符列表
            line = re.split(r'\s+', i)
            # 将字符列表用','拼接成一个新字符串
            new_line = ','.join(line)
            # 将新字符串尾部产生的','去掉
            new_line = new_line.strip(',')
            sheet0.append(re.split(',', new_line))
        elif lines[len(lines) - 1] + 4 <= num:
            if '节点'.find(i) != -1:
                print(i)
                break
            # 将字符串i以全部空白字符为分割符，将其分割成一个字符列表
            line = re.split(r'\s+', i)
            # 将字符列表用','拼接成一个新字符串
            new_line = ','.join(line)
            # 将新字符串尾部产生的','去掉
            new_line = new_line.strip(',')
            sheet0.append(re.split(',', new_line))
    workbook.save(epath)  # 保存到指定目录
    print('完成！')


path = 'output_2.rpt'
epath = '补爬.xlsx'
txt_split_excel(path)
